From 20051e02eb93baa819a217bc70574e1b49865033 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Fri, 24 Sep 2010 22:10:20 +0200 Subject: [PATCH] GtkCssProvider: use mapped file to read CSS files. --- gtk/gtkcssprovider.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/gtk/gtkcssprovider.c b/gtk/gtkcssprovider.c index fc07bf37b4..151902f54f 100644 --- a/gtk/gtkcssprovider.c +++ b/gtk/gtkcssprovider.c @@ -2167,7 +2167,8 @@ gtk_css_provider_load_from_path (GtkCssProvider *css_provider, { GtkCssProviderPrivate *priv; GError *internal_error = NULL; - gchar *data; + GMappedFile *mapped_file; + const gchar *data; gsize length; g_return_val_if_fail (GTK_IS_CSS_PROVIDER (css_provider), FALSE); @@ -2175,13 +2176,21 @@ gtk_css_provider_load_from_path (GtkCssProvider *css_provider, priv = css_provider->priv; - if (g_file_get_contents (path, &data, &length, - &internal_error)) + mapped_file = g_mapped_file_new (path, FALSE, &internal_error); + + if (internal_error) { g_propagate_error (error, internal_error); return FALSE; } + length = g_mapped_file_get_length (mapped_file); + data = g_mapped_file_get_contents (mapped_file); + + /* FIXME: Set error */ + if (!data) + return FALSE; + if (priv->selectors_info->len > 0) g_ptr_array_remove_range (priv->selectors_info, 0, priv->selectors_info->len); @@ -2194,7 +2203,7 @@ gtk_css_provider_load_from_path (GtkCssProvider *css_provider, parse_stylesheet (css_provider); - g_free (data); + g_mapped_file_unref (mapped_file); return TRUE; } -- 2.30.2